// Internal action code for project bpm-km-workflow.mas2j



package actions;

import javax.swing.JOptionPane;
import javax.swing.DefaultListModel;
import java.io.File;

import jason.*;
import jason.asSemantics.DefaultInternalAction;
import jason.asSemantics.TransitionSystem;
import jason.asSemantics.Unifier;
import jason.asSyntax.Literal;


import cartago.*;
import cartago.manual.syntax.Term;
import cartago.util.agent.Agent;

public class newFile extends DefaultInternalAction {
	
	String path = "D:/Archivos/guardar";
	jason.asSemantics.Agent agente;
    public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception {

        // execute the internal action

        if (true) { // just to show how to throw another kind of exception	
			agente = ts.getAg();
            start(ts);
        }       

        // everything ok, so returns true

        return true;

    }

	
	public void start(TransitionSystem ts){
		
		//chequearCambios(ts);
		MiHilo elHilo = new MiHilo();
		elHilo.start();
	}

public class MiHilo extends Thread
{
	public DefaultListModel model = new DefaultListModel();
	String dir = "D:/Archivos/guardar";
   public void run()
   {
	   cargarArchivos();
      
		while(true)
		{
		try{		
		chequearCambios();
		Thread.currentThread().sleep(5000);		
		}
		catch(Exception e){}
		}
   }
   
   private void cargarArchivos()
	{				
		try
		{
		File directorio = new File(dir);
        String[] listaDirectorio = directorio.list();
		for (int i=0; i<listaDirectorio.length; i++) {
		    model.add(i, listaDirectorio[i]);			
		}
		}
		catch(Exception e)
		{
			System.out.println("No existe el directorio o es inaccesible");
		}
	}
   
   public void chequearCambios()
	{		
		
		try
		{
		File directorio = new File(dir);
        String[] listaDirectorio = directorio.list();
		for (int i=0; i<listaDirectorio.length; i++) {
			if(!model.contains(listaDirectorio[i]))
			{
				agente.addBel(Literal.parseLiteral("newFile("+listaDirectorio[i]+")"));
				model.add(i, listaDirectorio[i]);
				
			}
		}
		}
		catch(Exception e)
		{
			System.out.println("No existe el directorio o es inaccesible");
		}
		
		
	}
}
}
